iT邦幫忙

2022 iThome 鐵人賽

DAY 13
0
自我挑戰組

簡介密碼學系列 第 13

Day13- AES key schedule

  • 分享至 

  • xImage
  •  

聲明

小弟我才接觸資安1年多,有很多東西沒有學過跟不確定,今天要介紹的金鑰生成最近才開始去看(以前學校教AES時直接跳過金鑰生成阿~~!)有任何說錯的部分,還請大佬們指正

為何要金鑰生成?


AES的加密流程中會做很多個rounds,但每個round都要一把金鑰,但又不能要使用著生出一堆金鑰八
所以就有了金鑰生成的演算法
至於要幾把round key就要看哪種AES了,這裡用AES128為例,AES128有10 rounds,所以要11把因為在最一開始明文就和key做一次addroundkey了,所以多1把,就是11把

怎麼生?


(來源:https://braincoke.fr/blog/2020/08/the-aes-key-schedule-explained/#aes-key-schedule)

  • 首先把128位元的金鑰分成4段,每段32位元(w0~w3)
    這就是第一把round key,也就是原來的key
  • 把該組的最後一段(w3)丟入一系列的函式做運算
  • 把結果跟第1段(w0)做xor運算成為下組的第1段(w4)
  • 再把結果(w4)跟第2段(w1)做xor來得到新的第2段(w5)
  • 直到新的round key的4段都出來
  • 新的round key誕生~

RotWord、SubWord、Rcon

RotWord

這個最簡單,就是左位移
把32位元分成8位元一組共4組(4 bytes)
[a1,a2,a3,a4]
接著以組為單位位移
[a2,a3,a4,a1]
記得超過要回來
就這樣沒了~

SubWord

這個也還好
和AES內的SubBytes一樣
一樣把4 bytes的資料透過S_box(對又我)做置換


是一個bytes(8 bits)丟入S_box歐,不是一次4 bytes
(來源:https://en.wikipedia.org/wiki/AES_key_schedule)

Rcon

這步就不是很懂了

ricon會是一個4 bytes的array,第1個bytes為rci
而這個i就是第幾round
AES128來說從1~10
直接對表
https://ithelp.ithome.com.tw/upload/images/20220914/20151821aaFWLBYmRQ.png
(這裡的值是16進位的)
最後把ricon這個4 bytes的array和SubWord出來的4 bytes array做xor運算得到輸出

AES總結

AES作為對稱加密的主流其背後真的很複雜,後面還有很多深奧的數論在背後,所以至今還未被淘汰和有效的攻擊手法
即便是量子演算法也是(RSA和DF瑟瑟發抖),可見其強大之處,也令人讚嘆背後的發明者們的厲害


上一篇
Day12- AES進階加密標準(2)
下一篇
Day14- 區塊加密使用模式
系列文
簡介密碼學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言